/**
 * \file packet_ip.h
 * \brief Header Packet IP
 * \author Pierre Neumann / Julien Meutelet
 * \version 0.1
 * \date 20 decembre 2013
 *
 * Fichier header de packet_ip.c
 *
 */
#ifndef packet_ip_h
#define packet_ip_h

const size_t IP_HEADER_SIZE; /*!< Taille de l'entête IP */

/**
 * \fn init_ip_header(char** packet, struct in_addr* destination, struct in_addr* source, size_t protocol_header_size,int protocol_number, int ttl)
 * \brief Initialise l'entête IP
 *
 * \param packet Chaine de caractère représentant le paquet.
 * \param destination Pointeur vers la structure in_addr de la destination.
 * \param source Pointeur vers la structure in_addr de la source.
 * \param protocol_header_size Taille de l'entête du protocole utilisé.
 * \param protocol_number Entier, numéro du protocole utilisé (ICMP, UDP, TCP).
 * \param ttl Entier utilisé pour initialiser le champ ttl de l'entête IP.
 * \return Rien.
 */
void init_ip_header(char** packet, struct in_addr* destination, struct in_addr* source, size_t protocol_header_size,int protocol_number,int ttl);

/**
 * \fn is_protocol(char** packet,int protocol_number)
 * \brief Teste le protocole du paquet
 *
 * \param packet Chaine de caractère représentant le paquet.
 * \param protocol_number Entier, numéro du protocole utilisé (ICMP, UDP, TCP).
 * \return Renvoie 1 si le paquet est du protocole passé en paramètre, 0 sinon.
 */
int is_protocol(char** packet,int protocol_number);

/**
 * \fn print_ip_header(char** packet)
 * \brief Affiche un paquet.
 *
 * \param packet Chaine de caractère représentant le paquet.
 * \return Rien.
 */
void print_ip_header(char** packet);

#endif
